package com.wondertek.service.service.business;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wondertek.common.base.Result;
import com.wondertek.service.dto.app.req.AddModeTimedTaskReq;
import com.wondertek.service.dto.app.req.AppRoomPageReq;
import com.wondertek.service.dto.app.req.AppRoomSelectByUserIdReq;
import com.wondertek.service.dto.app.req.AppRoomUpdateModeReq;
import com.wondertek.service.dto.app.res.AppRoomSelectByUserIdRes;
import com.wondertek.service.dto.business.req.ModeTimedTaskFindReq;
import com.wondertek.service.dto.business.req.RoomAddReq;
import com.wondertek.service.dto.business.req.RoomPageReq;
import com.wondertek.service.dto.business.req.RoomUpdateReq;
import com.wondertek.service.dto.business.res.RoomPageRes;
import com.wondertek.service.entity.business.RoomPo;
import com.wondertek.service.sdk.iotdh.dto.res.SetAreaArmModeRes;

import java.util.List;

public interface RoomService extends IService<RoomPo> {

    /*
    * 根据设备查询分区
    * */
    List<RoomPo> selectByDevice(String id);

    /*
    * 更改布防模式
    * */
    Result<SetAreaArmModeRes> updateMode(AppRoomUpdateModeReq req);

    /*
    * 根据用户id查询房间
    * */
    List<AppRoomSelectByUserIdRes> selectByUserId(AppRoomSelectByUserIdReq req);

    /*
    * 管理员新增房间
    * */
    void addRoom(RoomAddReq roomAddReq);

    /*
    * 房间列表
    * */
    Page<RoomPo> page(RoomPageReq roomPageReq);

    /*
     * 房间列表
     * */
    Page<RoomPo> page(AppRoomPageReq req);

    /**
     * 查询网关设备-房间列表
     * @param roomPageReq
     * @return
     */
    Page<RoomPageRes> roomPage(RoomPageReq roomPageReq);

    /*
    * 修改房间
    * */
    void updateRoom(RoomUpdateReq updateReq);


    /*
    * 删除房间
    * */
    void deleteRoom(String id);

    /*
    * 用户查询房间数
    * */
    int selectRoomNumByUserId(String userId);

    /*
     * 根据deviceId和app用户id查询租赁分区
     * */
    Page<AppRoomSelectByUserIdRes> findRoomByDcId(AppRoomPageReq req);


    /**
     * 新增定时布撤防
     * @param req
     */
    void addModeTimedTask(AddModeTimedTaskReq req);

    /**
     * 修改定时布撤防
     * @param req
     */
    void updModeTimedTask(AddModeTimedTaskReq req);

    /**
     * 查询定时布撤防
     * @param modeTimedTaskFindReq
     * @return
     */
    Page<AddModeTimedTaskReq> findModeTimedTask(ModeTimedTaskFindReq modeTimedTaskFindReq);

    /**
     * 暂停/启动 定时布撤防任务
     * @param taskId
     * @param status
     */
    void onOffModeTimedTask(String taskId, Integer status);

    /**
     * 删除定时布撤防任务
     * @param taskId
     */
    void delModeTimedTas(String taskId);
}
